#include "stm32wig.h"
#include "ui_stm32wig.h"
#include "globalval.h"
#include "mqtthandler.h"
#include <QPushButton>
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QLabel>
#include <QTimer>
#include <QDateTime>

Stm32Wig::Stm32Wig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Stm32Wig)
{
    ui->setupUi(this);

    // 设置 QLCDNumber 的 digitCount 为 8
        ui->lcd_time->setDigitCount(8);

    // 设置 QLCDNumber 的样式表以更改文本颜色为浅蓝色
      //  ui->lcd_time->setStyleSheet("QLCDNumber { color: blue; }");

    // 创建并启动定时器，每秒更新一次时间
        QTimer *timer = new QTimer(this);
        connect(timer, &QTimer::timeout, this, &Stm32Wig::updateTime);
        timer->start(1000);



        // 初始调用 updateTime 更新当前时间
        updateTime();

}

Stm32Wig::~Stm32Wig()
{
    delete ui;
}

void Stm32Wig::mqttSlot(const QByteArray &payload)
{
    qDebug() << "Stm32wig";
    qDebug() << payload;

    QString json = payload;
    QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
    if(doc.isObject())
    {
        qDebug() << true;
    }
    else
    {
        qDebug()<< false;
    }
    QJsonObject object = doc.object();
    QJsonValue temp = object["temp"];
    QJsonValue hum = object ["hum"];
    QJsonValue lht = object ["lht"];
    //QJsonValue som = object ["som"];

    // 将字符串转换为 double 并赋值给 GlobalVal 的静态成员
       GlobalVal::temp = temp.toDouble();
       GlobalVal::hum = hum.toDouble();
       GlobalVal::lht = lht.toDouble();
       // GlobalVal::som = som.toDouble();

       // 在 LCD 显示器上显示转换后的 double 值
       ui->lcd_temp->display(GlobalVal::temp);
       ui->lcd_humi->display(GlobalVal::hum);
       ui->lcd_lht->display(GlobalVal::lht);

}

void Stm32Wig::updateTime()
{
    QDateTime currentDateTime = QDateTime::currentDateTime();
    QString currentTime = currentDateTime.toString("hh:mm:ss");

    // 打印当前时间以进行调试
      //qDebug() << "Current Time:" << currentTime;

    // 将时间显示在一个 QLCDNumber 控件上
        ui->lcd_time->display(currentTime);
}

void Stm32Wig::on_pushButton_clicked()
{
    QJsonObject object;
    object["mode"] = 3;

    QJsonDocument doc(object);
    QByteArray json = doc.toJson();
    QMQTT::Message msg;
    msg.setPayload(json);
    msg.setTopic("/app/data/down");

    GlobalVal::mqtt->publish(msg);
}
